در اين قسمت مي خواهيم با يك سري از
اصول اوليه ي شيء گرايي در سي شارپ
كمي آشنا
شويم. لازم به ذكر است ، بسياري از
مواردي كه در اين قسمت مطرح مي شوند
فقط براي
آشنايي شما است و در آينده بيشتر بحث
و مرور خواهند شد.
آشنايي با
فضاهاي نام
(NameSpaces) :
فضاهاي نام روشي براي مديريت كد نويسي
هستند.
براي مثال آنها ايجاد شده اند تا
تداخلي بين نام هاي توابع در برنامه
شما رخ ندهد.
اين مساله در پروژه هاي بزرگ خود را
نشان مي دهد و ممكن است دو آيتم در يك
پروژه
نام هاي يكساني را پيدا كنند. بدين
وسيله اين شانس تصادم و تداخل كاهش
پيدا مي كند.
براي ايجاد يك فضاي نام به صورت زير
عمل مي شود:
namespace
anyName
{
……..
Class anyClassName
{
……….
}
…….
} |
يكي از
فضاهاي نام پايه اي در دات نت فريم
ورك ، فضاي نام
System
مي باشد. براي استفاده از
آن مي توان از كد زير كمك گرفت
:
تمام فضاهاي نام به صورت پيش فرض
public
مي باشند و در خارج
از كد شما قابل دسترسي هستند. روش
استفاده از آنها به صورت زير است:
ProjectName.NameSpace.ClassName.MemberName |
نكته
:
اگر دقت كرده باشيد هنگامي كه كرسر
ماوس را
روي هر آيتمي در منوي
autocomplete
نگه مي داريد و يا آنرا انتخاب مي
كنيد يك
راهنماي كوچك نمايش داده مي شود كه در
حقيقت كامنت مربوط به آن تابع مي
باشد. روش
نوشتن چنين كامنت حرفه اي كه در
منوهاي ويژوال استوديو ظاهر شود به
صورت زير است كه
بهتر است (!) قبل از هر تابع يا خاصيت
يا كلاس و .... نوشته شود
كلاس ها
:
چون سي شارپ تمام سر و كارش با كلاس
ها است بنابراين بايد در مورد نحوه ي
تعريف و استفاده از آنها تسلط كافي
داشته
باشيم.
يك پروژه ي جديد
console
در
VS.NET
باز كنيد و نام آنرا در ابتدا
ex03
وارد نماييد.
بعد از باز شدن پروژه ، از منوي
Project
گزينه ي
Add class
را انتخاب كنيد تا كلاسي جديد به نام
clsDate.cs
را اضافه نماييم. ساختار فايل
ايجاد شده توسط
VS.NET
به صورت زير است
:
using
System;
namespace ex03
{
///
/// Summary
description for clsDate.
///
public class clsDate
{
public clsDate()
{
//
// TODO: Add
constructor logic here (chashm!)
//
}
}
} |
تابع يا متد
clsDate
كه در اينجا به صورت پيش فرض ايجاد
شده است اصطلاحا سازنده
(constructor)
نام دارد.
اين تابع هر بار كه يك شيء جديد از
كلاس مي سازيم به صورت خودكار اجرا مي
شود.
از اين كلاس مي خواهيم براي نمايش
تاريخ/ ساعت و غيره استفاده كنيم.
براي مثال مي خواهيم تاريخ جاري سيستم
را به صورت يك خاصيت از اين كلاس
دريافت كنيم. براي اين منظور كد زير
را به برنامه اضافه مي نماييم:
public string
currentSystemDate
{
get
{
return
System.DateTime.Today.ToString()
;
}
} |
توضيح كد فوق
:
خاصيتي را كه مي خواهيم از
برنامه دريافت كنيم با كلمه ي كليدي
get
معرفي مي نماييم. هر چيزي كه اين قسمت
برگرداند خروجي
currentSystemDate
خواهد بود. اين دستور زبان كه در بالا
معرفي شد
استاندارد است و در همه جا به يك صورت
تعريف و بكار برده مي شود. پس شكل
آنرا به
خاطر بسپاريد.
از كلمه ي كليدي
return
براي برگرداندن يك خروجي از خاصيت و
يا
تابع استفاده مي شود.
براي استفاده از اين خاصيت جديد ، در
فايل
Class1.cs
كه متد
main
برنامه ي ما در آنجا قرار دارد به
صورت زير عمل مي كنيم
:
clsDate
m_var = new clsDate();
// initialize variable
Console.WriteLine (
m_var.currentSystemDate
);
Console.ReadLine();//pause!
|
توضيح كد فوق
:
براي استفاده از يك كلاس بايد
يك متغير از آن را تعريف كنيم. در هر
زباني يك سري نوع هاي استاندارد مانند
int
و
string
و غيره وجود دارند. كلاس هم در حقيقت
يك نوع داده ي بسيار بسيار قدرتمند به
شمار مي آيد. براي تعريف يك متغير از
نوع جديد روش كار مانند سابق است.
براي مثال
زماني كه يك متغير عدد صحيح را تعريف
مي كنيد به صورت زير عمل مي شود
:
براي تعريف يك متغير از نوع داده اي
كه خودمان تعريف كرده
ايم نيز بايد به همين صورت عمل شود.
clsDate
m_var = new clsDate(); |
از كلمه ي كليدي
new
اينجا به صورت استاندارد براي مقدار
دهي اوليه به اين متغير جديد استفاده
مي
نماييم.
سپس به روش دستيابي به اين خاصيتي كه
به كلاس اضافه كرده ايم مي
رسيم.
كلا چه يك خاصيت و يا يك متد را به
كلاس اضافه نماييم براي
دستيابي به آن از عملگر نقطه پس از
ذكر نام متغير تعريف شده از نوع كلاس
خود ،
استفاده مي نماييم. براي استفاده از
خاصيت ها نيازي به آوردن () بعد از
ذكر نام
خاصيت نمي باشد.
عموما از خاصيت ها براي برگرداندن و
يا تنظيم يك مقدار
ساده استفاده مي شود و در آنها عمليات
پيچيده اي مد نظر نمي باشد.
توضيحي در مورد
; () System.DateTime.Today.ToString
استفاده از
خواص
:
شما به ويژگي هاي يك شيء با استفاده
از خواص آن مي توانيد دسترسي
پيدا كنيد. يك
property
عضوي است كه امكان دسترسي به ويژگي
شيء يا كلاس را فراهم مي
كند. براي مثال طول يك رشته
(string)
، سايز يك فونت ، عنوان يك فرم و نام
يك مصرف
كننده ، خاصيت هستند
.
بسياري از اشياء ذاتي دات نت فريم ورك
، خواص مفيد زيادي
را به همراه دارند. براي مثال شيء
DateTime
را در نظر بگيريد. با استفاده از
خاصيت
Today
آن مي توان تاريخ جاري سيستم را بدست
آورد. براي استفاده از يك خاصيت لازم
است تا كلاس تعريف كننده شيء در
برنامه مهيا باشد. منظور همان استفاده
از فضاي نام
مربوطه مي باشد. پس از وارد كردن فضاي
نام كلاس مورد نظر مي توانيد از شيء و
خواص
آن استفاده كنيد. دو راه وجود دارد يا
به صورت كامل تمام موارد بايد ذكر
شوند مانند
System.DateTime.Now;
و يا با وارد كردن فضاي نام
System
كوتاه سازي صورت مي گيرد.
براي استفاده از هر متد و يا شيء ايي
در سي شارپ بايد اين شيء قابل دسترسي
باشد. براي مثال شيء
Console
كه از آن براي چاپ كردن خروجي بر روي
صفحه ي نمايش
استفاده مي كنيم در فضاي نام
System
واقع شده است.
يا بايد در ابتداي برنامه ذكر
كرد
using System ;
و سپس خيلي راحت از اين شيء استفاده
كرد و يا مي توان اينكار را
انجام نداد و نوشت
: System.Console
و الي آخر. با ذكر فضاي نام در ابتدا
با
استفاده از
using
مي توان خلاصه نويسي كرد.
نتيجه ي نهايي مثال اين فصل
:
محتويات فايل
Class1.cs :
using
System;
namespace ex03
{
///
/// Summary
description for Class1.
///
class Class1
{
///
/// The main entry
point for the
application.
///
[STAThread]
static void
Main(string[] args)
{
clsDate m_var =
new clsDate(); //
initialize variable
Console.WriteLine (
m_var.currentSystemDate
);
Console.ReadLine();//pause!
}
}
} |
محتويات فايل
clsDate.cs
كه به برنامه اضافه كرديم:
using
System;
namespace ex03
{
///
/// Summary
description for clsDate.
///
public class clsDate
{
public clsDate()
{
//
// TODO: Add
constructor logic here
//
}
public string
currentSystemDate
{
get
{
return
System.DateTime.Today.ToString()
;
}
}
}
} |